package com.zx.sealeds;

/**
 * <p>
 * description: 密封类示例 <br>
 * create: 2025-05-16 15:01
 * </p>
 *
 * @author zhou  xun
 */
// 定义密封类 Shape，明确允许 Circle、Rectangle、Triangle 三个子类
// 密封类（或接口）通过 permits 关键字指定哪些类可以继承它，其他类无法继承
// 子类必须是 final、sealed 或 non-sealed
// 继承密封类的子类必须明确声明自己是：
// final：不能再被继承（最终类）。
// sealed：继续限制继承（子类仍需 permits）。
// non-sealed：开放继承（任何类都可以继承它）
public sealed abstract class Shape permits Circle, Rectangle, Triangle {
    public abstract double area();
}